package cn.cdeden.resource.api.domain;

import cn.cdeden.common.oss.annotation.SystemModule;
import cn.cdeden.common.oss.enumd.OssModuleOperate;
import com.alibaba.fastjson2.JSONObject;
import jakarta.validation.constraints.NotNull;
import lombok.*;

import java.io.Serial;
import java.io.Serializable;

/**
 * @ProjectName : KnowCore01
 * @Package : cn.cdeden.resource.api.domain
 * @ClassName : RemotOssUpload
 * @Author : Yu.
 * @Description : // OSS  上传文件 参数验证
 * @Date : 2024/12/4 17:41
 * @Version : 1.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RemoteOssUpload implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;


    /**
     * 文件上传的路径
     **/
//    @NotNull(message = "文件上传路径不能为空")
    private String filePath;


    /**
     * 文件上传的存储id
     **/
    private String fileId;

    /**
     * 父编号
     **/
    private String parentId;

    /**
     * 文件大小
     **/
    @NotNull(message = "文件大小不能为空")
    private Long fileSize;


    /**
     * 文件名称
     **/
    @NotNull(message = "文件名称不能为空")
    private String fileName;


    /**
     * 文件后缀
     **/
    @NotNull(message = "文件后缀不能为空")
    private String fileSuffix;

    public String getFileSuffix() {
        return fileName + "." + this.fileSuffix;
    }

    /**
     * 其他信息  存放个个模块的 要携带的其他参数
     **/
    private JSONObject info;


    /**
     * 备注
     **/
    private String remarks;

    /**
     * 桶名
     **/
    private String brandName;


    /**
     * 操作类型
     **/
    private OssModuleOperate operate = OssModuleOperate.upload;

    /**
     * 模块
     **/
    @NotNull(message = "缺少必要上传文件参数")
    @SystemModule //后端 添加类型
    private String type;


//    /**
//     * 文件消息
//     **/
//    private RemoteFile fileInfo;


}
